org 100h				; 加载到 100h 处（COM要求）
	mov	ax, cs			; 置DS和ES=CS
	mov	ds, ax
	mov	es, ax

	mov	dh, 0		; "Booting  "
	call	DispStr		; 显示字符串
	mov	dh, 2		; "Ready."
	call	DispStr		; 显示字符串
	mov	dh, 1		; "No LOADER"
	call	DispStr		; 显示字符串

	jmp $				; 进入死循环
	
	; 为简化代码，下面每个字符串的长度均为MessageLength（=9），似串数组
	MessageLength	equ	9
	BootMessage:		db	"Booting  " 	; 9字节，不够则用空格补齐。序号0
	Message1			db	"Ready.   " 	; 9字节，不够则用空格补齐。序号1
	Message2			db	"No LOADER" ; 9字节，不够则用空格补齐。序号2
	;===========================================================

;----------------------------------------------------------------------------
; 函数名：DispStr
;----------------------------------------------------------------------------
; 作用：显示一个字符串，函数开始时DH中须为串序号(0-based)
DispStr:
	mov	ax, MessageLength ; 串长->AX（即AL=9）
	mul	dh				; AL*DH（串序号）->AX（=当前串的相对地址）
	add	ax, BootMessage	; AX+串数组的起始地址
	mov	bp, ax			; BP=当前串的偏移地址
	mov	ax, ds			; ES:BP = 串地址
	mov	es, ax			; 置ES=DS
	mov	cx, MessageLength	; CX = 串长（=9）
	mov	ax, 1301h			; AH = 13h（功能号）、AL = 01h（光标置于串尾）
	mov	bx, 0007h		; 页号为0(BH = 0) 黑底白字(BL = 07h)
	mov	dl, 0				; 列号=0
	int	10h				; 显示中断
	ret					; 函数返回
;----------------------------------------------------------------------------